/**
 * 跨省通办中的附件操作js，包含附件校验、上传、下载等方法，整个前台中操作公用的js
 * 所有的附件都存储到kstb自己业务系统的数据库表中
 *
 *
 */
import { Message } from "element-ui";

//定义一些常用的变量

//大小不要超过20M
const fileSize = 20 * 1000 * 1000;
//图片类型
const fileImgTypeReg = /(JPEG|TIFF|PNG|GIF|PSD|RAW|EPS|SVG|BMP|JPG)$/i;
//图片文件类型 图片 PDF txt office文件
const fileAllTypeReg = /^(JPEG|TIFF|PNG|GIF|PSD|RAW|EPS|SVG|PDF|BMP|JPG|PDF|TXT|docx|doc|xlsx|xls|pptx|ppt|ofd|OFD)$/i;

//可预览的文件类型
const fileViewTypeReg = /(JPEG|TIFF|PNG|GIF|PSD|RAW|EPS|SVG|PDF|BMP|JPG|PDF)$/i;

/**
 * 跨省通办附件操作api
 */
import request from "@/utils/request";
const baseURL = process.env.VUE_APP_BASE_API;

/**
 * 上传附件，并保存到数据库中，返回保存后对象的数据
 */
export function uploadFile() {
  return (
    baseURL +
    process.env.VUE_APP_KSTB_ROUTE_PATH +
    "/common/atta/uploadFileAndSaveKstbAtta"
  );
}

/**
 * 文件上传到附件表
 * @param {*} data
 */
export function uploadFileByFile(data) {
  return request({
    url:
      process.env.VUE_APP_KSTB_ROUTE_PATH +
      `/common/atta/uploadFileAndSaveKstbAtta`,
    method: "post",
    headers: {
      "Content-Type": " multipart/form-data"
    },
    data: data
  });
}

/**
 * 下载附件
 * @param {*} id
 */
export function downloadFile(id) {
  window.location.href =
    baseURL +
    process.env.VUE_APP_KSTB_ROUTE_PATH +
    `/common/atta/downloadFileKstbAtta/${id}`;
}

export function downloadFileKstbOrSys(attaOid) {
  window.location.href =
    baseURL +
    process.env.VUE_APP_KSTB_ROUTE_PATH +
    `/common/atta/downloadFileKstbOrSys/${attaOid}`;
}

//删除附件数据 通过id删除
export function deleteFile(id) {
  return request({
    url:
      process.env.VUE_APP_KSTB_ROUTE_PATH +
      `/common/atta/deleteFileKstbAtta/${id}`,
    method: "post"
  });
}

/**
 *
 * @data :element 中上传文件返回的文件对象数据
 * 配合element-upload中beforeUpload方法使用的只能上传图片,最后返回值是提示信息，如果有值就说明有错误，没有值则说明没有错误
 */
export function beforeUploadCheckImg(data) {
  //大小校验
  if (!data) {
    return "请上传文件";
  }

  let { size = 0, type = "", name = "" } = data;

  if (size <= 0) {
    return "文件大小不能是0KB";
  }

  if (size > fileSize) {
    return `文件大小不能超过${fileSize / 1000 / 1000}M`;
  }

  if (!name) {
    return "文件名不能为空";
  }

  //截取文件后缀名
  let suffIdx = name.lastIndexOf(".");
  //后缀名
  let suff = "";
  if (suffIdx >= 0 && suffIdx != name.length - 1) {
    suff = name.substring(suffIdx + 1);
  }

  console.log("suff", suff);
  //格式校验
  if (!fileImgTypeReg.test(suff)) {
    return "图片格式错误，请上传的正确的图片";
  }

  return "";
}

/**
 * 校验文件
 * @param {*} data
 * @returns
 */
export function beforeUploadCheckAll(data,cardTypeCode) {
  //大小校验
  //大小校验
  if (!data) {
    return "请上传文件";
  }

  let { size = 0, type = "", name = "" } = data;

  if (size <= 0) {
    return "文件大小不能是0KB";
  }

  if (size > fileSize) {
    return `文件大小不能超过${fileSize / 1000 / 1000}M`;
  }

  if (!name) {
    return "文件名不能为空";
  }

  //截取文件后缀名
  let suffIdx = name.lastIndexOf(".");
  //后缀名
  let suff = "";

  if (suffIdx >= 0 && suffIdx != name.length - 1) {
    suff = name.substring(suffIdx + 1);
  }

  if(cardTypeCode&&cardTypeCode=='ZJLX_ZZ'){ 
    if (suff!='ofd') {
      return "文件格式错误，请上传的ofd格式的文件";
    } 
  }

  //格式校验
  if (!fileAllTypeReg.test(suff)) {
    return "文件格式错误，请上传的正确的文件";
  }

  return "";
}

/**
 * 预览前的校验，如果不是图片或者pdf直接提示暂不支持预览
 * @param {*} url
 */
export function viewCheck(url) {
  if (!url) {
    return "暂不支持预览";
  }

  //获取文件的后缀名
  //截取文件后缀名
  let suffIdx = url.lastIndexOf(".");
  //后缀名
  let suff = "";
  if (suffIdx >= 0 && suffIdx != url.length - 1) {
    suff = url.substring(suffIdx + 1);
  }

  console.log("suff", suff);
  //格式校验
  if (!fileViewTypeReg.test(suff)) {
    return "暂不支持预览";
  }
}

/**
 * 预览文件
 * @param {*} url
 */
export function viewFile(url) {
  //先校验url 能不能预览
  let msgError = viewCheck(url);
  if (msgError) {
    Message.error(msgError);
    return false;
  }
  return true;
}
